import '../AI/dify_datasets.dart';
import 'file_serve.dart';

class SearchService {
  final DifyKnowledgeDatabase _difyKnowledge;
  final FileServe _fileServe;
  
  SearchService(this._difyKnowledge, this._fileServe);
  
  /// 执行搜索并获取结果
  /// 
  /// 返回搜索结果列表，每个结果包含文档标题、内容和相关度
  Future<List<Map<String, dynamic>>> performSearch(String query) async {
    // 使用DifyKnowledge进行搜索
    final results = await _difyKnowledge.query(query);
    
    // 获取并添加文档标题
    for (var result in results) {
      final documentId = result['document_id'] as String;
      final title = await _fileServe.getDocumentTitle(documentId);
      result['title'] = title ?? '未知文档';
    }
    
    return results;
  }
  
  /// 获取文档的原始文件路径
  Future<String?> getDocumentFilePath(String documentId) async {
    return await _fileServe.getFilePathByDocId(documentId);
  }
  
  /// 获取所有可用的搜索过滤器
  /// 
  /// 例如，可以返回所有可用的文档类型或标签
  Future<List<String>> getSearchFilters() async {
    // 这里获取所有分类作为过滤器
    return await _fileServe.getCategories();
  }
  
  /// 根据文档ID删除文档
  Future<bool> deleteDocument(String documentId) async {
    try {
      // 从Dify知识库中删除
      final result = await _difyKnowledge.deleteDocument(documentId);
      
      // 从所有分类中移除文档
      await _fileServe.removeDocumentFromCategories(documentId);
      
      // 检查是否删除成功
      return result['result'] == 'success' || 
          (result.containsKey('status') && result['status'] == 'success');
    } catch (e) {
      print('删除文档失败: $e');
      return false;
    }
  }
} 